﻿function mydownpdf(pdfurl,pdfid,pdfinforesultEvent,obj){
    setTimeout(function(){mydownpdfrun(pdfurl,pdfid,pdfinforesultEvent,obj);},500);
}
function mydownpdfrun(pdfurl,pdfid,pdfinforesultEvent,obj){
	var w=window.open();
	var async=true;
//	if($.browser.mozilla){
//		//火狐改成同步执行
//		async=false;
//	}

	$.ajax({
        type: "get",
        async:async, 
        url: pdfurl,
        data: "pdfid="+pdfid+"&date=" + new Date(),
        dataType: "json",
        success: function(msg) {
           if(msg.url!=null)
            	msg.url=msg.url.replace("%","");
           pdfinforesultEvent(msg,pdfid,obj);
           if(msg.type=="success"){
                if(msg.checkurl.length>0){
                    //window.open(msg.checkurl);
                    w.location=msg.checkurl;
                }else{
                    w.close();
                    var __userAgent=navigator.userAgent.toLowerCase();
                    if(/chrome/.test(__userAgent)){
                        Downer(msg.url);
                    }else{
                        var a=$("<a href='"+msg.url+"' target='_blank'>a</a>").get(0);
                        var e=document.createEvent("MouseEvents");
                        e.initEvent("click",true,true);
                        a.dispatchEvent(e);

                    }
                }
        	}else{
                w.close();
            }
        }
    });
}


/**
 * Javascript 多文件下载
 * @author Barret Lee
 * @email  barret.china@gmail.com
 */
var Downer = (function(files){
	var h5Down = !/Trident|MSIE/.test(navigator.userAgent);

	/**
	 * 在支持 download 属性的情况下使用该方法进行单个文件下载
	 * @param  {String} fileName
	 * @param  {String|FileObject} contentOrPath
	 * @return {Null}
	 */
	function downloadFile(fileName, contentOrPath){
		var aLink = document.createElement("a"),
			evt = document.createEvent("HTMLEvents"),
			isData = contentOrPath.slice(0, 5) === "data:",
			isPath = contentOrPath.lastIndexOf(".") > -1;

		// 初始化点击事件
		evt.initEvent("click",false,false);

		// 添加文件下载名
		aLink.download = fileName;

		// 如果是 path 或者 dataURL 直接赋值
		// 如果是 file 或者其他内容，使用 Blob 转换
		aLink.href = (isPath || isData) ? contentOrPath
					: URL.createObjectURL(new Blob([contentOrPath]));

		aLink.dispatchEvent(evt);
	}

	/**
	 * [IEdownloadFile description]
	 * @param  {String} fileName
	 * @param  {String|FileObject} contentOrPath
	 */
	function IEdownloadFile(fileName, contentOrPath, bool){
		var isImg = contentOrPath.slice(0, 10) === "data:image",
			ifr = document.createElement('iframe');

		ifr.style.display = 'none';
		ifr.src = contentOrPath;

		document.body.appendChild(ifr);

		// dataURL 的情况
		isImg && ifr.contentWindow.document.write("<img src='" + 
				contentOrPath + "' />");

		// 保存页面 -> 保存文件
		// alert(ifr.contentWindow.document.body.innerHTML)
		if(bool){
			ifr.contentWindow.document.execCommand('SaveAs', false, fileName);
			document.body.removeChild(ifr);
		} else {
			setTimeout(function(){
				ifr.contentWindow.document.execCommand('SaveAs', false, fileName);
				document.body.removeChild(ifr);
			}, 0);
		}
	}

	/**
	 * [parseURL description]
	 * @param  {String} str [description]
	 * @return {String}     [description]
	 */
	function parseURL(str){
		return str.lastIndexOf("/") > -1 ? str.slice(str.lastIndexOf("/") + 1) : str;
	}
	return function(files){
		// 选择下载函数
		var downer = h5Down ? downloadFile : IEdownloadFile;

		// 判断类型，处理下载文件名
		if(files instanceof Array) {
			for(var i = 0, l = files.length; i < l ; i++) 
				// bug 处理
				downer(parseURL(files[i]), files[i], true);
		} else if(typeof files === "string") {
			downer(parseURL(files), files);
		} else {
			// 对象
			for(var file in files) downer(file, files[file]);
		}
	}

})();